home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / gtk-2.0 / demo / expander.c < prev    next >
Encoding:
C/C++ Source or Header  |  2006-04-25  |  1.4 KB  |  59 lines

  1. /* Expander
  2.  *
  3.  * GtkExpander allows to provide additional content that is initially hidden.
  4.  * This is also known as "disclosure triangle".
  5.  *
  6.  */
  7.  
  8. #include <gtk/gtk.h>
  9.  
  10. static GtkWidget *window = NULL;
  11.  
  12.  
  13. GtkWidget *
  14. do_expander (GtkWidget *do_widget)
  15. {
  16.   GtkWidget *vbox;
  17.   GtkWidget *label;
  18.   GtkWidget *expander;
  19.   
  20.   if (!window)
  21.   {
  22.     window = gtk_dialog_new_with_buttons ("GtkExpander",
  23.                       GTK_WINDOW (do_widget),
  24.                       0,
  25.                       GTK_STOCK_CLOSE,
  26.                       GTK_RESPONSE_NONE,
  27.                       NULL);
  28.     gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
  29.  
  30.     g_signal_connect (window, "response",
  31.               G_CALLBACK (gtk_widget_destroy), NULL);
  32.     g_signal_connect (window, "destroy",
  33.               G_CALLBACK (gtk_widget_destroyed), &window);
  34.  
  35.     vbox = gtk_vbox_new (FALSE, 5);
  36.     gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
  37.     gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
  38.  
  39.     label = gtk_label_new ("Expander demo. Click on the triangle for details.");
  40.     gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
  41.  
  42.     /* Create the expander */
  43.     expander = gtk_expander_new ("Details");
  44.     gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, FALSE, 0);
  45.  
  46.     label = gtk_label_new ("Details can be shown or hidden.");
  47.     gtk_container_add (GTK_CONTAINER (expander), label);
  48.   }
  49.  
  50.   if (!GTK_WIDGET_VISIBLE (window))
  51.     gtk_widget_show_all (window);
  52.   else
  53.     gtk_widget_destroy (window);
  54.  
  55.   return window;
  56. }
  57.  
  58.  
  59.